# flags para o compilador
CFLAGS = -Wall -W
IFLAGS = -br -brs -npsl -ce -cli4

# BIBLIOTECAS
LIBS = -lm -lpthread

# ficheiros objectos
OBJS = main.o cmdline.o crypt.o debug.o files.o hashtables.o listas.o memory.o pthrds.o signal_out.o str_utils.o spell.o toperrors.o
PROGRAM = textTool

all: ${PROGRAM}

depuracao: CFLAGS += -D SHOW_DEBUG
depuracao: ${PROGRAM}

${PROGRAM}: ${OBJS}
	${CC} -o $@ ${OBJS} ${LIBS}

# Lista de dependências dos ficheiros código fonte
#semaforos.o: semaforos.c semaforos.h
main.o: main.c cmdline.h crypt.h debug.h files.h hashtables.h listas.h pthrds.h memory.h signal_out.h spell.h str_utils.h toperrors.h
cmdline.o: cmdline.c cmdline.h
crypt.o: crypt.c crypt.h debug.h files.h memory.h
debug.o: debug.c debug.h
files.o: files.c debug.h files.h memory.h
hashtables.o: hashtables.c hashtables.h listas.h
listas.o: listas.c listas.h
memory.o: memory.c debug.h memory.h
pthrds.o: pthrds.c debug.h files.h hashtables.h listas.h memory.h pthrds.h str_utils.h toperrors.h spell.h
signal_out.o: signal_out.c signal_out.h
spell.o: spell.c debug.h files.h memory.h listas.h hashtables.h str_utils.h spell.h
str_utils.o: str_utils.c debug.h files.h hashtables.h listas.h memory.h str_utils.h
toperrors.o: toperrors.h debug.h files.h memory.h crypt.h listas.h hashtables.h str_utils.h spell.h pthrds.h

# Indica como transformar um ficheiro .c num ficheiro .o
.c.o:
	${CC} ${CFLAGS} -c $<

# remove ficheiros sem interesse
clean:
	rm -f *.o core.* *~ ${PROGRAM}

gen:
	gengetopt < textTool.ggo --unamed-opts

docs: Doxyfile
	doxygen Doxyfile

Doxyfile:
	doxygen -g Doxyfile

indent:
	indent ${IFLAGS} *.c *.h

